<?php
session_start();
include "Includes/solotrn_sesion.php";
include "Includes/soloFun_Generales.php";
require_once "config.php";
require_once "Includes/conexion.class.php";

$txtarchivo1 = $_FILES["txtarchivo1"];

if(!empty($txtarchivo1["tmp_name"])){
    $tmp_name = $txtarchivo1["tmp_name"];
    $fp = fopen($tmp_name, "rb");
    $Archivo = fread($fp, filesize($tmp_name));
    $Archivo = addslashes($Archivo);
    fclose($fp);
}

$strdescripcion = $_REQUEST["ATxtDescripcion"];
$strusua = $_REQUEST["ATxtUsuario"];

//$fecha1 = FormatFecha($_REQUEST["fecha1"],"DD/MM/YYYY","YYYY-MM-DD");

$strfecha = date("Y-m-d");
//'strfecha=strfecha &" "& time
//'strfecha=left(strfecha,len(strfecha)-3)
$strhora = date("H:i:s");
//$strSql = "select max(id_ticket)+1 as id  from solotb_ticket_aprobaciones";

//$oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
//        $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
//if(!$oConexion->EjecutarQuery($strSql)) {
//    $strERROR = 1;
//    $err = 0;
//    echo $oConexion->getErrorMessage();
//}
//$res = $oConexion->getData("NUM");
//$MaxId = $res[0][0];
//$oConexion->Cerrar();

//$MaxId = SoloFun_ExecSql($strSql, $Arreglo);
$idticket = $_REQUEST["txtId"];
$destinatario = $_REQUEST["destinatario"];
$strSql = "select max(secuencia)+1 as secuencia  from solotb_ticket_aprobaciones where id_ticket=".$idticket;
//$oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
//        $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
//if(!$oConexion->EjecutarQuery($strSql)) {
//    $strERROR = 1;
//    $err = 0;
//}

//id_nivel1, id_nivel2, id_nivel3, id_nivel4, id_nivel5
$id_nivel1 = trim($_REQUEST["id_nivel1"]);
$id_nivel2 = trim($_REQUEST["id_nivel2"]);
$id_nivel3 = trim($_REQUEST["id_nivel3"]);
$id_nivel4 = trim($_REQUEST["id_nivel4"]);
$id_nivel5 = trim($_REQUEST["id_nivel5"]);

$Maxsecuencia = 1;
//$res = $oConexion->getData("NUM");
//$Maxsecuencia1 = $res[0][0];
//$oConexion->Cerrar();
$Maxsecuencia1 = SoloFun_ExecSql($strSql, $Arreglo);

if ($Maxsecuencia1 > $Maxsecuencia)
    $Maxsecuencia = $Maxsecuencia1;

if(!empty($txtarchivo1["tmp_name"])){
    $blob = ", '$Archivo'";
}else{
    $blob = "";
}

$arrSQL = array();

$SoloSQL = "insert into solotb_ticket_aprobaciones (id_ticket, secuencia";
if(!empty($id_nivel1)){
    $SoloSQL .= ", id_nivel1";
    if(!empty($id_nivel2)){
        $SoloSQL .= ", id_nivel2";
        if(!empty($id_nivel3)){
            $SoloSQL .= ", id_nivel3";
            if(!empty($id_nivel4)){
                $SoloSQL .= ", id_nivel4";
                if(!empty($id_nivel5)){
                    $SoloSQL .= ", id_nivel5";
                }
            }
        }
    }
}
$fecha_asignacion = FormatFecha($_REQUEST["fecha1"], "DD/MM/YYYY", "YYYY/MM/DD");

$fecha_ticket = preg_split("/ /", $_REQUEST["fecha_ingreso"]);
$fecha_ticket = FormatFecha($fecha_ticket[0], "DD/MM/YYYY", "YYYY/MM/DD");

$fecha_expiracion = FormatFecha($_REQUEST["fecha_expiracion"], "DD/MM/YYYY", "YYYY/MM/DD");
$tramite_aprobacion_estado = $_REQUEST["tramite_aprobacion_estado"];
$comentario = $_REQUEST["ATxtDescripcion"];
$fecha_aprobacion = date("Y/m/d");
//printArray($_SESSION);
$SoloSQL .= ", cod_tecnico, fecha_ticket, fecha_asignacion, fecha_termino_esperada, fecha_aprobacion, estado, comentario, nodo) values (";
$SoloSQL .= $idticket . ",";
$SoloSQL .= $Maxsecuencia . ",";
if(!empty($id_nivel1)){
    $SoloSQL .= "$id_nivel1, ";
    if(!empty($id_nivel2)){
        $SoloSQL .= "$id_nivel2, ";
        if(!empty($id_nivel3)){
            $SoloSQL .= "$id_nivel3, ";
            if(!empty($id_nivel4)){
                $SoloSQL .= "$id_nivel4, ";
                if(!empty($id_nivel5)){
                    $SoloSQL .= "$id_nivel5, ";
                }
            }
        }
    }
}
//$SoloSQL .= "$id_nivel1, $id_nivel2, $id_nivel3, $id_nivel4, $id_nivel5,";
$SoloSQL .= "{$_SESSION["id_usua"]},";
$SoloSQL .= "'$fecha_ticket',";
$SoloSQL .= "'$fecha_asignacion',";
$SoloSQL .= "'$fecha_expiracion',";
$SoloSQL .= "'$fecha_aprobacion',";
$SoloSQL .= "'$tramite_aprobacion_estado',";
$SoloSQL .= "'$comentario', {$_SESSION["empresa"]})";
//echo $SoloSQL;
array_push($arrSQL, $SoloSQL);

if(!empty($txtarchivo1["tmp_name"])){
    //consultar por campos de archivo disponibles
    $strSql = "select file1, file2, file3, file4, file5 from solotb_ticket where id = $idticket";
    $oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
            $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
    $oConexion->EjecutarQuery($strSql);
    $data = $oConexion->getData();
    if(!is_null($data["file1"]) || $data["file1"] != "")
        $file = "file1";
    elseif(!is_null($data["file2"]) || $data["file2"] != "")
        $file = "file2";
    elseif(!is_null($data["file3"]) || $data["file3"] != "")
        $file = "file3";
    elseif(!is_null($data["file4"]) || $data["file4"] != "")
        $file = "file4";
    else $file = "file5";


    $SoloSQL2 = "update solotb_ticket set $file = $blob WHERE id = $idticket";
    array_push($arrSQL, $SoloSQL2);
}

///////////////////////////////////////
$fechasolucion = date('d/m/Y H:i'). ":00";
//$fecha_asignacion = FormatFecha(str_replace("/", "-", $fecha_asignacion), "YYYY-MM-DD", "DD-MM-YYYY") ;
$fecha_asignacion = str_replace("/", "-", $fecha_asignacion);
$pivot = $fecha_asignacion;
//echo $fecha_asignacion."----".$fechasolucion."<br>";
$dias = datediff("h",$fecha_asignacion." 00:00:00",$fechasolucion);
$dias2 = datediff("d",$fecha_asignacion,$fechasolucion);

for ($cont = 1; $i < $dias2; $i++) {
    $fechafin = DateAdd("d",1,$pivot);
    $pivot = $fechafin;
    $array_date = getdate($fechafin);
    if ($array_date["weekday"] == 7 || $array_date["weekday"] == 1)
        $resta++;

}

$dias /= 24;
$dias -= resta;
/////////////////////////////////////////

$SoloSQL3 = "update solotb_ticket_dpto set estado = 61,
            cantidad_tiempo_dias = $dias,
            fecha_solucion = CURRENT_TIMESTAMP
        WHERE id_ticket = $idticket and cod_dpto in ($id_nivel2)";
array_push($arrSQL, $SoloSQL3);

//Aqui vamos a indicar si el ticket pasa a otro departamento o si finaliza
$tramite_proceso = $_REQUEST["tramite_proceso"]; //valores posibles: continua o fin

//si es el ultimo departameno entonces aprobar el ticket en general
if($tramite_proceso == "fin"){
    $fecha_ticket = str_replace("/", "-", $fecha_ticket);
    $pivot = $fecha_ticket;

    $dias = datediff("h",$fecha_ticket." 00:00:00",$fechasolucion);
    $dias2 = datediff("d",$fecha_ticket,$fechasolucion);

    for ($cont = 1; $i < $dias2; $i++) {
        $fechafin = DateAdd("d",1,$pivot);
        $pivot = $fechafin;
        $array_date = getdate($fechafin);
        if ($array_date["weekday"] == 7 || $array_date["weekday"] == 1)
            $resta++;
    }

    $dias /= 24;
    $dias -= $resta;
    $SoloSQL3 = "update solotb_ticket set estado = 61, fecha_solucion = CURRENT_DATE,
            cantidad_tiempo_total = '$dias2 dias', cantidad_tiempo_dias = $dias2,
            cantidad_tiempo_horas = $dias WHERE id = $idticket";
    array_push($arrSQL, $SoloSQL3);
}else{
    $dpto_sgte = $_REQUEST["CboAreaSgte"];

    $SoloSQL3 = "Insert into solotb_ticket_dpto (id_ticket, estado, cod_dpto, nodo) values($idticket, 62, $dpto_sgte, {$_SESSION["empresa"]})";
    array_push($arrSQL, $SoloSQL3);
    
    $strSql = "SELECT des FROM solotb_nivel2 WHERE id2 = $id_nivel2";
    $dpto_proc = SoloFun_ExecSql($strSql, $Arreglo);

    $oConexion = new Conexion($MIES["motor_base"], $MIES["db_usuario"], $MIES["db_password"],
                $MIES["basedatos"], $MIES["servidor"], $MIES["flags"], $MIES["encoding"]);
    $strsql = "select campo2
        from MIES.TDL_DATOS where id_tdl_datos = {$arrDataTicket[0]["asunto"]}";
    $nom_organizacion = SoloFun_ExecSqlFull($strsql, $Arreglo, $oConexion);
    $oPHPMailer->ClearAddresses();
    $oPHPMailer->AddAddress(SoloFun_ExecSql($strsql, $mails_dptos_restantes));
    $oPHPMailer->Subject = "Asignacion de Ticket No. " . $idticket;
    $oPHPMailer->Body = "Ticket No.$idticket
Organizacion: $nom_organizacion
Fecha de Asignacion: ". date("d/m/Y H:i:s") ."
Departamento de Procedencia: $dpto_proc


(Las tildes han sido omitidas intencionalmente para evitar problemas de lectura)";
    $oPHPMailer->Send();
}

//Para cambiar el estado del ticket a aprobado
$SoloSQL3 = "SELECT * FROM solotb_ticket_dpto WHERE id_ticket = $idticket and estado <> 61 or estado is null";
SoloFun_ExecSql($SoloSQL3, $Arreglo);
//printArray($arrSQL);
$oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"],
        $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);
if(!$oConexion->EjecutarTransaccion($arrSQL)) {
    $strMsg = $pagina . "?SoloError=1&CboNodo=". $strnodo . $opc;
    echo $oConexion->getErrorMessage();
}else {
    //SoloFun_IngresaLog(2,$co_tran,$ds_tran);
    $strMsg = $pagina . "?SoloError=0&CboNodo=". $strnodo . $opc;
}

//printArray($arrSQL);
$oConexion->Cerrar();

if(count($Arreglo) > 1){
    $strSql = "SELECT asunto FROM solotb_ticket WHERE id = $idticket";
    SoloFun_ExecSql($strSql, $arrDataTicket);

    $oConexion = new Conexion($MIES["motor_base"], $MIES["db_usuario"], $MIES["db_password"],
                $MIES["basedatos"], $MIES["servidor"], $MIES["flags"], $MIES["encoding"]);
    $strsql = "select campo2
        from MIES.TDL_DATOS where id_tdl_datos = {$arrDataTicket[0]["asunto"]}";
    $nom_organizacion = SoloFun_ExecSqlFull($strsql, $Arreglo, $oConexion);

    //enviar un mail al jefe del siguiente departamento
    $strsql = "select mail
        from solotb_usuario_infoadic
        left join solotb_nivel2 on co_supervisor = nu_usua
        where id2 in (SELECT cod_dpto FROM solotb_ticket_dpto where id_ticket = $idticket and estado <> 61)";
    $oPHPMailer->ClearAddresses();
    $oPHPMailer->AddAddress(SoloFun_ExecSql($strsql, $mails_dptos_restantes));
    $oPHPMailer->Subject = "Asignacion de Ticket No. " . $idticket;
    $oPHPMailer->Body = "Ticket No.$idticket
Organizacion: $nom_organizacion
Fecha de Ingreso: ". date("d/m/Y H:i:s") ."


(Las tildes han sido omitidas intencionalmente para evitar problemas de lectura)";
    $oPHPMailer->Send();
    //$SoloTos = SoloFun_ExecSql($strsql, $mails_dptos_restantes);
    //$SoloSubject = "Asignaci&oacute;n de Ticket No. " . $idticket;
    //$SoloContent = "Asignaci&oacute;n ingresada el: $fecha_aprobacion<br><br>$comentario<br><br>" ." Enviado por:" .$_SESSION["NOMBRE_EMPLEADO_EVOL"];
    //SoloFun_SendMailSugerencias($SoloSubject, $SoloContent, $SoloTos);
}

//$opc = "&opcion=3";//'&OpbTipo=T&max=" & maximo;
//$co_tran = 201;
//$ds_tran = "Ingresar Usuario " . $strusua;

$strsql = "select mail from solotb_usuario_infoadic where nu_usua = ".$Arreglo[0][4];
$mail_supervisor = SoloFun_ExecSql($strsql, $Array2);

$soloSQL6 = "select mail, tecnico_responsable_user from solotb_ticket a left join tb_soporte on tecnico_responsable_user = codigo where a.id = ". $idticket;
soloFun_ExecSQL ($soloSQL6,$SoloArrmails);
//$sql123 = "select mail from tb_soporte where codigo like '". $SoloArrmails[0][1] ."'";
//$mailtecnico = EjecutaSentenciaSql($sql123);
$mailtecnico = $SoloArrmails[0][1];

//'CORREO DIRIGIDO AL TECNICO QUE VA A ATENDER EL REQUERIMIENTO
$SoloTos = "$mail_supervisor, $mailtecnico";
//$SoloSubject = "Una nueva actividad de seguimiento ha sido ingresada en el Ticket No. " . $idticket;
//$SoloSubject = "Aprobaci&oacute;n de Ticket No. " . $idticket;
//$SoloContent = "Aprobaci&oacute;n ingresada el: $fecha_aprobacion<br><br>$comentario<br><br>" ." Enviado por:" .$_SESSION["NOMBRE_EMPLEADO_EVOL"];
SoloFun_SendMailSugerencias($SoloSubject, $SoloContent, $SoloTos);
$oPHPMailer->ClearAddresses();
    $oPHPMailer->AddAddress(SoloFun_ExecSql($strsql, $mails_dptos_restantes));
    $oPHPMailer->Subject = "Conclusion de Ticket No. " . $idticket;
    $oPHPMailer->Body = "Ticket No.$idticket
Estado: $tramite_aprobacion_estado
Fecha de Conclusion: $fecha_aprobacion
Comentario: $comentario
            
            
(Las tildes han sido omitidas intencionalmente para evitar problemas de lectura)";
    $oPHPMailer->Send();


function SoloFun_SendMailSugerencias($SoloSubject, $SoloContent, $SoloTos) {
    //'Enviar Mail de Sugerencias
//      Dim objMailer
//      Set objMailer = Server.CreateObject("Dundas.Mailer")
//      if err<>0 then
//         response.write err.description
//         //'re
//      end if
    //'rw "SMTP",SoloSMTP
    //'rw "PORT",SoloSMTP_Port
    //'rw "FROM NAME",SoloFromNameDescription
    //'rw "ADDRESS",SoloFromAddress
    //'rw "TOS",SoloTos
    //'rw "SUBJECTS",SoloSubject
    //'re

    /*objMailer.SMTPRelayServers.Add SoloSMTP, SoloSMTP_Port
      objMailer.FromAddress = SoloFromAddress
      objMailer.FromName = SoloFromNameDescription
      objMailer.Subject = SoloSubject
      objMailer.htmlBody = SoloContent
      objMailer.TOs.Add SoloTos
      objMailer.SendMail	   */

    //if err<>0 then
    if(mail($SoloTos, $SoloSubject, $SoloContent)) {
        echo "error al enviar correo de sugerencias";
        return;
        //'SoloFun_SendMailSugerencias=-1
    }//else
    //'   rw "","ok"
    //'SoloFun_SendMailSugerencias=0
    //end if
    //set ObjMailer = Nothing
}
?>
<script type="text/javascript">
    window.opener.location.reload();
    window.close();
</script>